package org.jeecg.modules.wms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.wms.entity.WmsPurchaseOrderDetail;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Description: 采购单明细表Service接口
 * @Author: jeecg-boot
 * @Date: 2023-07-17
 * @Version: V1.0
 */
public interface IWmsPurchaseOrderDetailService extends IService<WmsPurchaseOrderDetail> {

    /**
     * 根据采购单ID查询明细列表
     *
     * @param purchaseOrderId 采购单ID
     * @return 明细列表
     */
    List<WmsPurchaseOrderDetail> selectByPurchaseOrderId(String purchaseOrderId);

    /**
     * 根据采购单ID删除明细
     *
     * @param purchaseOrderId 采购单ID
     * @return 删除结果
     */
    boolean deleteByPurchaseOrderId(String purchaseOrderId);

    /**
     * 更新已入库数量
     *
     * @param id               明细ID
     * @param receivedQuantity 已入库数量
     * @return 更新结果
     */
    boolean updateReceivedQuantity(String id, BigDecimal receivedQuantity);

    /**
     * 批量保存采购单明细
     *
     * @param purchaseOrderId 采购单ID
     * @param detailList      明细列表
     * @return 保存结果
     */
    boolean saveBatch(String purchaseOrderId, List<WmsPurchaseOrderDetail> detailList);

    /**
     * 根据物料编码查询最近的采购单明细
     *
     * @param materialCode 物料编码
     * @param limit        限制条数
     * @return 采购单明细列表
     */
    List<WmsPurchaseOrderDetail> selectLatestByMaterialCode(String materialCode, int limit);
    
    /**
     * 查询采购单明细列表
     *
     * @param purchaseOrderId 采购单ID
     * @return 明细列表
     */
    List<WmsPurchaseOrderDetail> queryDetailList(String purchaseOrderId);
} 